package com.egao.common.publicly;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.StrUtil;
import com.egao.common.core.web.JsonResult;
import com.egao.common.module.visitorsQuestionnaire.entity.VisitorsQuestionnaire;
import com.egao.common.module.visitorsQuestionnaire.service.VisitorsQuestionnaireService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author lym
 * @date 2024/6/13 17:44
 */
@Api(tags = "访客问卷")
@RestController
@RequestMapping("${api}")
public class PubliclyVisitorsQuestionnaire {

    @Autowired
    private StringRedisTemplate redisTemplate;
    @Resource
    private VisitorsQuestionnaireService visitorsQuestionnaireService;

    @ApiOperation("单位注册")
    @PostMapping("/publicly/visitors-questionnaire/save")
    public JsonResult save(@RequestBody VisitorsQuestionnaire visitorsQuestionnaire) {
        if (StrUtil.isBlank(visitorsQuestionnaire.getCode())) {
            return JsonResult.error("验证码为空");
        }

        if (StrUtil.isBlank(visitorsQuestionnaire.getCodeKey())) {
            return JsonResult.error("验证码为空!");
        }

        String today = DatePattern.PURE_DATE_FORMAT.format(new DateTime());
        if (Boolean.FALSE.equals(redisTemplate.hasKey(today + visitorsQuestionnaire.getCodeKey()))) {
            return JsonResult.error("验证码已过期");
        }

        String redisCode = redisTemplate.opsForValue().get(today + visitorsQuestionnaire.getCodeKey());
        if (!visitorsQuestionnaire.getCode().equalsIgnoreCase(redisCode)) {
            return JsonResult.error("验证码不正确");
        }

        visitorsQuestionnaireService.saveVq(visitorsQuestionnaire);
        return JsonResult.ok();
    }
}
